Android中的su命令使用 您所在的位置:网站首页 scaricati whatsapp gratis su android Android中的su命令使用

Android中的su命令使用

2022-12-19 01:26| 来源: 网络整理| 查看: 265

Android开发工具系列目录

Android项目中Git工具的使用史上最全Git命令使用手冊史上最新最全的ADB命令行Android中的su命令使用Postman测试WebService接口2022 Android studio 最全必用插件

su命令 前言一、怎么使用su?二、代码异常情况三、Android ROOT 博客创建时间:2022.09.24 博客更新时间:2022.09.25

以Android studio build=7.0.0,SDKVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。

前言

在日常开发Android程序中,我们可能碰到在程序中获取su权限,然后获取io流,执行shell命令。但是Android system/xbin 下的 su 是系统原生带的 su 程序,只给有 system 和 shell 用户使用,普通app 无法访问。

要使普通 app也能 su ,就要替换系统的 su 程序,有专门的,比如 SuperSU。或者将系统root,这样普通程序就能有权限使用。

一、怎么使用su?

常见的使用代码如下,通过以下代码能让我们提权使用shell命令,做一些更高级的指令操作。比如我要给某个USB串口授权chmod 777 /dev/ttyACM

// cmd="chmod 777 /dev/ttyACM" public static int execRootCmdSilent(String cmd) { int result = -1; DataOutputStream dos = null; try { Process p = Runtime.getRuntime().exec("su"); dos = new DataOutputStream(p.getOutputStream()); Log.i(TAG, cmd); dos.writeBytes(cmd + "\n"); dos.flush(); dos.writeBytes("exit\n"); dos.flush(); p.waitFor(); result = p.exitValue(); } catch (Exception e) { e.printStackTrace(); } finally { if (dos != null) { try { dos.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; }

设备是否有root权限可以通过代码进行测试,此处提供检测设备是否root过的权限

/** * 判断机器Android是否已经root,即是否获取root权限 */ public static boolean haveRoot() { // 通过执行测试命令来检测 int ret = execRootCmdSilent("echo test"); if (ret != -1) { Log.i(TAG, "have root!"); return true; } else { Log.i(TAG, "not root!"); return false; } } 二、代码异常情况

上面给出的代码是在Android系统被root过,或者手动授予了su操作命令,否则代码运行会出现两种异常情况(情况由本人亲测):

java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null 在这里插入图片描述 在Android 6.0及以下的真机和虚拟机中会出现以上的报错异常,意思就是没有su执行环境,无法执行su命令。

java.io.IOException: Cannot run program “su”: error=13, Permission denied 在这里插入图片描述 Android 7.0及以后的Android真机和模拟器是没有Root权限的,所以执行代码会出现权限denied。

三、Android ROOT

Android系统的超级用户一般命名为root,root是系统中唯一的超级用户。root权限是指Linux的系统管理员权限,类似于Windows系统中的Administrator。 安卓root权限具有系统中所有的权限,可以访问和修改你手机中几乎所有的文件(Android系统文件及用户文件,不包括ROM),启动或停止一个进程,删除或增加用户,增加或者禁用硬件等等。

Root的优点:

可以备份系统。使用高级的程序,例如屏幕截图、root explorer等等。修改或是删除系统的内部程序。可以更改apk安装到data分区或是sd卡分区中,将程序安装到SD卡中手机开发人员,需要使用命令行控制设备

Root风险:

如果在ROOT的过程中遇到问题,可能使手机变砖(无法开机)。如果不小心安装了恶意软件,可能使手机中的个人隐私信息暴露。容易被病毒软件、黑客伤害个别手机厂商会检测用户是否曾进行ROOT操作,这可能与保修有关。

相关链接:

Android项目中Git工具的使用史上最全Git命令使用手冊史上最新最全的ADB命令行Android中的su命令使用Postman测试WebService接口2022 Android studio 最全必用插件

扩展链接:

Material Design UI方案使用讲解Material TextInputLayout使用详解Room数据库,用过你才知道好ART与Dalvik、JVM之间的关系你懂了吗一篇文章弄懂Java多线程基础和Java内存模型

博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有